package TUILayer;

import java.util.*;
import ControlLayer.LagerCtr;
import ModelLayer.LagerMappe.*;

public class LagerUI
{
    private Scanner keyboard;
    private LagerCtr lagerCtr;
    private boolean running;
    
    public LagerUI()
    {
        keyboard = new Scanner(System.in);
        lagerCtr = new LagerCtr();
        running = true;
    }
    
    public void lagerMenu()
    {
        while(running)
        {
            writeMenu();
            int choise = userInt();
            
            switch(choise)
            {
                case 1:
                    lavTest();
                    break;
                case 2:
                    running = false;
                    break;
                default:
                    forkertInput();
            }
            pause();
        }
    }
    
    private void writeMenu()
    {
        System.out.println("\fLager Menu");
        System.out.println("##########");
        System.out.println("# 1) lav test-objekter");
        System.out.println("# 2) Exit");
        System.out.println();
    }
    
    private int userInt()
    {
        System.out.print("Indtast nummer: ");
        int result = 0;
        result = keyboard.nextInt();
        return result;
    }
    
    private String userString(String navnPaaString)
    {
        System.out.print("Indtast " + navnPaaString + ": ");
        String result = "";
        result = keyboard.nextLine();
        return result;
    }
    
    private void forkertInput()
    {
        System.out.println("Input ikke gyldigt!");
        pause();
    }
    
    private void pause()
    {
        Scanner pause = new Scanner(System.in);
        pause.nextLine();
    }
    
    //Menu metoder
    private void lavTest()
    {
        //Lager
        lagerCtr.createLager("Lager 1 - Test");
        System.out.println("Lager med navenet: \"Lager 1 - Test\" blev lavet ");
        lagerCtr.createLager("Lager 2 - Test");
        System.out.println("Lager med navenet: \"Lager 2 - Test\" blev lavet ");
        
        //Vare
        lagerCtr.createHyldevare("Lager 1 - Test", 200, "hyldeTest", "testVare1", "vare til test", "stregkodeTest", 100, 50, 100, 500, 300);        
        System.out.println("Vare med navenet: \"hyldeTest\" blev lavet ");
        
        lagerCtr.createHyldevare("Lager 1 - Test", 100, "hyldeTest2", "testVare2", "vare til test 2", "stregkodeTest2", 150, 140, 20, 500, 400);
        System.out.println("Vare med navenet: \"hyldeTest\" blev lavet ");
        
        lagerCtr.createHyldevare("Lager 2 - Test", 200, "hyldeTest3", "testVare3", "vare til test 3", "stregkodeTest3", 100, 50, 100, 500, 300);
        System.out.println("Vare med navenet: \"hyldeTest\" blev lavet ");
    }
    
    //Andre metoder
    public int getAntal()
    {
        System.out.print("Antal: ");
        return keyboard.nextInt();
    }
    
    public Lagervare getVare()
    {
        Lagervare result = null;
        
        String vareNavn = userString("vare navn");
        int vareCount = 1;
        System.out.println("Vare liste: ");
        System.out.println(" nummer)  lager  ---  vare navn");
        
        ArrayList<Lagervare> vareListe = lagerCtr.getVareListe(vareNavn);
        
        for(Lagervare lv : vareListe)
        {
            
            String lagernavn = lv.getLager().getNavn();
            String fuldVareNavn = lv.getDelLager().getVare().getNavn();
            
            System.out.printf(" %d)  %s  ---  %s \n", vareCount, lagernavn, fuldVareNavn);
            vareCount++;
        }
        
        System.out.printf(" %d) Afbryd \n", vareCount);
        
        if(vareListe.size() != 0)
        {
            int choise = intLoop(vareListe.size());
            if(choise == vareCount)
            {
                return null; //<-- hvis choise == vareCount, da er det "Afbryd", der er blevet valgt
            }
            result = vareListe.get(choise - 1);
        }
        else
        {
            System.out.printf("Der fandtes ingen vare indeholdende ordet \"%s\" \n", vareNavn);
        }
        
        pause();
        return result;
    }
    
    /**
     * Bliver ved med at spørge (op til 5 gange) 
     * efter en ny choise (int),
     * indtil choise <= limit
     */
    private int intLoop(int limit)
    {
        int choise = 0;
        int counter = 5;
        boolean loop = true;
        while(loop && counter > 0)
        {
            choise = userInt();
            if(choise <= limit)
            {
                loop = false;
            }
            else
            {
                forkertInput();
                System.out.printf("%d forsøg tilbage \n", counter);
                counter--;
                pause();
            }
        }
        
        return choise;
    }
    
    
}